package com.wtwd.campus.vcom.dao;

import com.wtwd.campus.vcom.entity.VcomH5Fence;
import com.wtwd.campus.vcom.entity.VcomH5UserDevice;
import com.wtwd.campus.vcom.entity.VcomStudentDevice;
import com.wtwd.campus.vcom.entity.VcomWarningRecord;
import com.wtwd.campus.vcom.entity.vo.VcomH5FenceVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface VcomH5Mapper {
    /**
     * 根据h5用户id和imei查询一条绑定关系
     */
    VcomH5UserDevice getBindingById(@Param("id") Integer id );

    /**
     * 新增一条h5绑定信息
     * @param data
     * @return
     */
    int addVcomH5Binding(@Param("data") VcomH5UserDevice data);

    /**
     * 修改一条h5绑定信息
     * @param data
     * @return
     */
    int modifyVcomH5Binding(@Param("data") VcomH5UserDevice data);

    /**
     * 获取设备的所有围栏信息
     * @param deviceId
     * @return
     */
    List<VcomH5Fence> getVcomFenceListByDeviceId(@Param("deviceId") Integer deviceId);

    /**
     * 获取一个学生的所有围栏信息
     * @param stuId
     * @return
     */
    List<VcomH5Fence> getVcomFenceListByStuId(@Param("stuId") String stuId);

    /**
     * 修改一个学生所有围栏的所属设备
     * @param deviceId
     * @param stuId
     * @return
     */
    int modifyVcomFenceDeviceId(@Param("deviceId") Integer deviceId,@Param("stuId") String stuId);

    /**
     * 根据学生id和围栏id删除一笔围栏
     * @param id
     * @param stuId
     * @return
     */
    int deleteFenceByIdAndStuId(@Param("id") Integer id,@Param("stuId") String stuId);

    /**
     * 修改h5围栏信息
     * @param data
     * @return
     */
    int modifyFenceInfo(@Param("data") VcomH5FenceVO data);

    /**
     * 新增一个h5围栏
     * @param data
     * @return
     */
    int addFenceInfo(@Param("data") VcomH5FenceVO data);

    /**
     * 根据id查询一笔围栏信息
     * @param id
     * @return
     */
    VcomH5Fence getFenceInfoById(@Param("id") Integer  id);

    /**
     * 保存一笔Vcom的告警记录
     * @param data
     * @return
     */
    int addVcomWarningRecord(@Param("data") VcomWarningRecord data);

    /**
     * 根据设备id获取学生id（从h5围栏表中）
     * @param deviceId
     * @return
     */
    String getStudentIdByDeviceId(@Param("deviceId") Integer deviceId);

    /**
     * 获取一个学生的所有类型的告警记录
     * @return
     */
    List<VcomWarningRecord> getStudentWarningRecords(@Param("stuId") String stuId,@Param("start") Integer start,@Param("size") Integer size);

    /**
     * 根据学生id查询学生设备的绑定关系
     */
    VcomStudentDevice getVcomStudentDeviceByStuId(@Param("stuId") String stuId);

    /**
     * 新增一笔学生设备绑定关系
     */
    int addStudentDeviceBinding(@Param("data") VcomStudentDevice data);

    /**
     * 修改一笔学生设备绑定关系
     */
    int modifyStudentDeviceBinding(@Param("data") VcomStudentDevice data);

    /**
     * 根据设备imei获取学生id（从学生和设备的绑定关系中）
     * @param imei
     * @return
     */
    List<String> getStudentIdByImei(@Param("imei") String imei);

    /**
     * 根据imei将未归属的告警信息归属给学生
     * @param imei
     * @return
     */
    int modifyWarningRecordStudentIdByImei(@Param("imei") String imei,@Param("stuId") String stuId);
}
